#include "Packet.hpp"

namespace sf
{
	sf::Packet& operator+(sf::Packet& packet, bool& p)
	{
		return packet << p;
	}

	sf::Packet& operator-(sf::Packet& packet, bool& p)
	{
		return packet >> p;
	}

	sf::Packet& operator+(sf::Packet& packet, float& p)
	{
		return packet << p;
	}

	sf::Packet& operator-(sf::Packet& packet, float& p)
	{
		return packet >> p;
	}

	sf::Packet& operator+(sf::Packet& packet, double& p)
	{
		return packet << p;
	}

	sf::Packet& operator-(sf::Packet& packet, double& p)
	{
		return packet >> p;
	}

	sf::Packet& operator+(sf::Packet& packet, const char* p)
	{
		return packet << p;
	}

	sf::Packet& operator-(sf::Packet& packet, char* p)
	{
		return packet >> p;
	}

	sf::Packet& operator+(sf::Packet& packet, const std::string& p)
	{
		return packet << p;
	}

	sf::Packet& operator-(sf::Packet& packet, std::string& p)
	{
		return packet >> p;
	}

	sf::Packet& operator+(sf::Packet& packet, const std::wstring& p)
	{
		return packet << p;
	}

	sf::Packet& operator-(sf::Packet& packet, std::wstring& p)
	{
		return packet >> p;
	}

	sf::Packet& operator+(sf::Packet& packet, sf::Int8& p)
	{
		return packet << p;
	}

	sf::Packet& operator-(sf::Packet& packet, sf::Int8& p)
	{
		return packet >> p;
	}

	sf::Packet& operator+(sf::Packet& packet, sf::Uint8& p)
	{
		return packet << p;
	}

	sf::Packet& operator-(sf::Packet& packet, sf::Uint8& p)
	{
		return packet >> p;
	}

	sf::Packet& operator+(sf::Packet& packet, sf::Int16& p)
	{
		return packet << p;
	}

	sf::Packet& operator-(sf::Packet& packet, sf::Int16& p)
	{
		return packet >> p;
	}

	sf::Packet& operator+(sf::Packet& packet, sf::Uint16& p)
	{
		return packet << p;
	}

	sf::Packet& operator-(sf::Packet& packet, sf::Uint16& p)
	{
		return packet >> p;
	}

	sf::Packet& operator+(sf::Packet& packet, sf::Int32& p)
	{
		return packet << p;
	}

	sf::Packet& operator-(sf::Packet& packet, sf::Int32& p)
	{
		return packet >> p;
	}

	sf::Packet& operator+(sf::Packet& packet, sf::Uint32& p)
	{
		return packet << p;
	}

	sf::Packet& operator-( sf::Packet& packet, sf::Uint32& p)
	{
		return packet >> p;
	}

	sf::Packet& operator+(sf::Packet& packet, const sf::String& p)
	{
		return packet << p;
	}

	sf::Packet& operator-(sf::Packet& packet, sf::String& p)
	{
		return packet >> p;
	}
}